package view.terrain;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.util.Observable;
import java.util.Observer;

import javax.swing.ImageIcon;

import rmi.RemoteObserver;
import server.models.plateau.IPlateau;
import view.utils.ImageUtil;


/**
 * Classe Plateau - Représente un plateau (pigeon d'argile).
 * @author Alexandre
 *
 */
public class PlateauView extends Component implements RemoteObserver{
	private static final String PIDGE_BROKEN_JPG = "view/ressources/pidge_broken.jpg";
	private static final String PIDGE_JPG = "view/ressources/pidge.jpg";
	private int x;
	private int y;

	ImageIcon icon;

	private Image image;

	private float pidgeon_speed_x;
    private float pidgeon_speed_y;
    
    //---------Méthodes---------
    /**
     * Constructeur d'un plateau.
     * @param x Position horizontale initiale.
     * @param y Position verticale initiale.
     * @param x_speed Vitesse horizontale du plateau.
     * @param y_speed Vitesse verticale du plateau.
     */
    public PlateauView(IPlateau plateau, int x, int y, int direction){    	
    	icon = ImageUtil.getImageIcon(this, PlateauView.PIDGE_JPG);
    	image = icon.getImage();
    	this.x = x;
    	this.y = y;
    	
    	/**
    	 * this.pidgeon_speed_x = plateau.getValeurA() * direction;
    	this.pidgeon_speed_y = plateau.getValeurA() / 10000;
    	 */
    	
    	this.pidgeon_speed_x = 6 * direction;
    	this.pidgeon_speed_y = 1;
    }
    /**
     * Accesseur permettant d'obtenir l'image représentant le plateau.
     * @return image L'image représentant le plateau.
     */
    public Image getImage() {
        return image;
    }
    /**
     * Accesseur permettant d'obtenir la largeur de l'icône utilisé pour l'image.
     * @return icon.getIconWidth() La largeur de l'icône utilisé pour l'image.
     */
    public int getLargeur(){
    	return icon.getIconWidth();
    }
    /**
     * Accesseur permettant d'obtenir la hauteur de l'icône utilisé pour l'image.
     * @return icon.getIconHeight() La hauteur de l'icône utilisé pour l'image.
     */
    public int getHauteur(){
    	return icon.getIconHeight();
    }
    /**
     * Accesseur permettant d'obtenir la position horizontale du plateau.
     * @return x La position horizontale du plateau.
     */
    public int getX() {
        return x;
    }
    /**
     * Accesseur permettant d'obtenir la position verticale du plateau.
     * @return y La position verticale du plateau.
     */
    public int getY() {
        return y;
    }
    /**
     * Permet de bouger le disque selon la vitesse horizontale et verticale décidée.
     */
    public void move() {
        x += pidgeon_speed_x;
        y -= pidgeon_speed_y;
    }
    /**
     * Change l'image initiale du plateau pour celle du plateau brisé.
     */
    public void setBrokenPidge(){
    	ImageIcon icon = ImageUtil.getImageIcon(this, PlateauView.PIDGE_BROKEN_JPG);
    	image = icon.getImage();
    }
    
    public void paint(Graphics g){
    	super.paint(g);
    	g.drawImage(image, x, y, null);
    }
	@Override
	public void update(Object object, Object arg0) {
		// TODO Auto-generated method stub
		
	}
}